<#
同步到镜像目录（原生 PowerShell）
用途：将 AIDevFlow 的 docs/rules/scripts/tools/admin/templates 同步到已配置的镜像目录。
用法：
  pwsh -File scripts/windows/sync_to_aidevflowmode.ps1 [-what "docs,rules,scripts,tools/admin,templates"]
说明：
  - 不使用任何硬编码目录名。
  - 仅从环境变量 MIRROR_DIR_NAME 或 config/rules.env 读取镜像目录名称。
#>
param([string]$what = 'docs,rules,scripts,tools/admin,templates')

$WindowsDir = Split-Path -Parent $PSCommandPath
$ScriptsDir = Split-Path -Parent $WindowsDir
$RepoDir = Split-Path -Parent $ScriptsDir  # AIDevFlow 目录
$RootDir = Split-Path -Parent $RepoDir     # 项目根目录

# 从环境或配置读取 MIRROR_DIR_NAME（不设置默认值）
$mirrorName = $env:MIRROR_DIR_NAME
if (-not $mirrorName) {
  $envFile = Join-Path $RepoDir 'config/rules.env'
  if (Test-Path $envFile) {
    $lines = Get-Content -Path $envFile -ErrorAction SilentlyContinue
    foreach ($line in $lines) {
      if ($line -match '^\s*MIRROR_DIR_NAME\s*=\s*(.+)\s*$') {
        $mirrorName = $Matches[1].Trim()
        break
      }
    }
  }
}

if (-not $mirrorName) { Write-Error "未配置镜像目录名称（MIRROR_DIR_NAME）。"; exit 2 }
$modeDir = Join-Path $RootDir $mirrorName
if (!(Test-Path $modeDir)) { Write-Error "未找到目标目录：$modeDir"; exit 2 }

$items = $what.Split(',') | ForEach-Object { $_.Trim() }
foreach ($i in $items) {
  $src = Join-Path $RepoDir $i
  $dst = Join-Path $modeDir $i
  if (Test-Path $src) {
    New-Item -ItemType Directory -Force -Path $dst | Out-Null
    Copy-Item -Path (Join-Path $src '*') -Destination $dst -Recurse -Force
    Write-Host "已同步：$i"
  } else { Write-Warning "源不存在：$src" }
}
exit 0
